/*
  学习目标：React更新机制
  1. 组件更新，默认会导致所有后代组件更新。
  2. 组件更新，默认不会影响兄弟组件。

  性能优化原则：
    1. 功能第一
    2. 性能第二

  性能优化的手段
    1. 不需要渲染的数据， 不要放在state中
    2. 使用shouldComponentUpdate避免无效更新

*/

import React, { Component } from 'react';

export default class App extends Component {
  state = { count: 0 };

  render() {
    const { count } = this.state;
    return (
      <div>
        <h1>{count}</h1>
        <button onClick={() => this.setState({ count: count + 1 })}>
          点我修改count
        </button>
        <Child></Child>
      </div>
    );
  }
}

class Child extends React.Component {
  // 更新前
  shouldComponentUpdate() {
    // 通过返回true或false， 决定是否更新
    // 返回true 表示更新
    // 返回false 表示不更新
    return false;
  }

  // 更新中
  render() {
    console.log('render执行了  ----->  ');
    return <div>Child</div>;
  }

  // 更新后
  componentDidUpdate() {
    console.log('Child被更新了  ----->  ');
  }
}
